本專案的服務除了Serverless的AWS Lambda外,其他包括Kafka、BotServer、及MongoDB等,都是部署在AWS EC2上。這個章節將簡要說明一台能運作的AWS EC2需要的標配設定,來讓我們可以在上面進行部署、維護、更新等工作:
EC2上的作業系統(OS)和環境設定是由AMI控制。AMI是一組預先配置好,裝好基本Library的OS image,可以選擇適合需求的 AMI,並根據它來啟動 EC2 實例。
查看AMI: 在EC2儀表板上,可以在左測選單的image -> AMI catelog查詢目前EC2的AMI Name和AMI Id。這些資訊可以用來查詢對應的操作系統和環境設定。例如,amzn2-ami-kernel-5.10-hvm-2.0.20221004.0-x86_64-gp2 對應的是 Amazon Linux 2。
要開啟一台EC2 Instance時,就會有步驟選擇AMI,這邊不贅述流程。
Amazon Linux 2是AWS提供的自家 Linux 發行版,預裝了Amazon Linux 2專屬的yum repository。
安裝套件: 透過sudo yum install [套件名稱]
來安裝所需的套件。
檢查套件: 可以使用 sudo yum list [軟體名稱]
查詢是否有該套件。如果找不到,可能需要手動下載和安裝,例如docker-compose就沒有在Amazon Linux 2 yum repositories上, 要自己安裝。
上述指令需要連線到EC2,連線方式如下介紹:
下面介紹2種連線方式,都是以ec2-user
這個預設帳號為例:
EC2 Instance Connect
SSH Client端
Public Key
和 Private Key
,通常保存在 ~/.ssh/ 目錄中。如果沒有,可以使用 ssh-keygen 生成一對新金鑰。~/.ssh/authorized_keys
中。ssh -i ~/.ssh/id_rsa ec2-user@ec2-xx-xxx-xxx-xxx.ap-southeast-1.compute.amazonaws.com
scp -i ~/.ssh/id_rsa [要上傳的檔案] ec2-user@ec2-xx-xxx-xxx-xxx:/home/ec2-user/[目的目錄]
* 從 EC2 下載檔案:
scp -i ~/.ssh/id_rsa ec2-user@ec2-xx-xxx-xxx-xx:/home/ec2-user/[要下載的檔案目錄] [要下載的本地目錄]
以下是本專案會用到的套件安裝指令:
sudo yum install java-11-amazon-corretto.x86_64
sudo yum install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
sudo chkconfig docker on # 設定 Docker 開機自動啟動
* 安裝 Docker Compose: 使用官方指令下載並安裝
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod 775 /usr/local/bin/docker-compose
# 註: v2.12.2可換成需要的版本
EC2使用安全群組(Security Group)來控制進出流量的規則。
可以根據需求新增或修改規則,來允許特定IP和Port連接,例如Kafka可能就需要開放9092, 9093這些常見的Port。
設定防火牆:
可以透過修改 EC2 Instance Type 來升級硬體,升級之前建議先備份實例或快照。
EC2可以只擴充硬碟容量,但是無法單獨改變CPU和Memory的規格,只能選擇各種類型提供的CPU / Memory組合。
更改EC2 Instance Type
快照與備份
計費與預算管理
本篇文章概述AWS EC2 的基本設定方法和擴充方式,使我們得到一個專案運作所需的執行環境。希望對於初次使用 EC2的使用者有所幫助。